package ar.uade.edu.fain.ad.server.dao.jpa;

import ar.uade.edu.fain.ad.server.business.Ingrediente;
import ar.uade.edu.fain.ad.server.business.Plato;
import ar.uade.edu.fain.ad.server.business.Producto;
import ar.uade.edu.fain.ad.server.business.Receta;
import ar.uade.edu.fain.ad.server.dao.PlatoDAO;
import ar.uade.edu.fain.ad.server.dao.ProductoDAO;
import ar.uade.edu.fain.ad.server.dao.entity.IngredienteEntity;
import ar.uade.edu.fain.ad.server.dao.entity.PlatoEntity;

public class PlatoJpaDAO 
		extends GenericJpaDAO<Plato, PlatoEntity, Long> 
		implements PlatoDAO {

	private ProductoDAO productoDAO;
	
	public PlatoJpaDAO() {
		super(PlatoEntity.class);
	}

	public ProductoDAO getProductoDAO() {
		return productoDAO;
	}

	public void setProductoDAO(ProductoDAO productoDAO) {
		this.productoDAO = productoDAO;
	}

	@Override
	protected PlatoEntity toEntity(Plato business) {
		return null;
	}

	@Override
	protected Plato toBusiness(PlatoEntity entity) {
		Plato business = new Plato();
		business.setId(entity.getId());
		business.setActivo(entity.isActivo());
		business.setComisionExtra(entity.getComisionExtra());
		business.setPrecio(entity.getPrecio());
		business.setDescripcion(entity.getDescripcion());
		final Receta receta = new Receta();
		receta.setDescripcionReceta(entity.getReceta().getDescripcionReceta());
		for (IngredienteEntity ingredienteEntity : 
			entity.getReceta().getIngredientes()) {
			Ingrediente ingrediente = new Ingrediente();
			ingrediente.setId(ingredienteEntity.getId());
			ingrediente.setCantidad(ingredienteEntity.getCantidad());
			final Producto producto = getProductoDAO()
					.get(ingredienteEntity.getProducto().getId());
			ingrediente.setProducto(producto);
		}
		business.setReceta(receta);
		return business;
	}
	

}
